# 1.创建元组
# 元组的表现形式为一组包含在圆括号()中，由逗号分割的元素，元组中元素的个数,类型不受限制
# ①使用()创建元组
t1 = ()  # 空元组
print(t1, type(t1))  # () <class 'tuple'>
t2 = (1,)  # 包含单个元素的元组元素后面的,不能省略
print(t2)  # (1,)
t3 = (1, 2, "a", "b", [1, 2])
print(t3, len(t3))  # (1, 2, 'a', 'b', [1, 2]) 5
# 使用内置函数tuple([iterable])创建元组
t1 = tuple()  # 空元组
t2 = tuple([1, 2, 3])
print(t2)  # (1, 2, 3)
t3 = tuple("python")
print(t3)  # ('p', 'y', 't', 'h', 'o', 'n')
t4 = tuple(range(5))
print(t4)  # (0, 1, 2, 3, 4)

# 2.访问元素
# ①索引
print(t3[3])  # h
# ②切片
print(t3[1:5:2])  # ('y', 'h')
# ③循环遍历
for i in t3:
    print(i, end=" ")  # p y t h o n
print()
# 注意：
# 元组是不可变类型，元组中的元素不能修改，即它不支持添加元素，删除元素和排序操作。
# 特殊情况：如果元组中含有可变的数据类型的元素,则这个可变类型的元素可以被修改
# 通过索引获取到元组中可变类型的元素来修改其值
t4 = (1, 2, ['a', 'b'], 3)
t4[2].append("c")
print(t4)  # (1, 2, ['a', 'b', 'c'], 3)
#  修改了元组中的列表
